package com.ruoyi.system.domain;

import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;

import java.util.Date;
import java.util.List;

/**
 * 设备管理对象 mr_device
 *
 * @author lsw
 * @date 2024-01-18
 */
@Data
@EqualsAndHashCode(callSuper = true)
public class MrDevice extends BaseEntity {
    private static final long serialVersionUID = 1L;

    /**
     * 设备id
     */
    private Long deviceId;

    /**
     * 厂 家
     */
    private String manufactor;

    /**
     * 设备归属类型
     * 0=区域,1=网关,2=通道
     */
    @Excel(name = "设备归属类型", readConverterExp = "0=区域,1=网关,2=通道")
    private String deviceBelong;

    /**
     * 设备归属id
     */
    @Excel(name = "设备归属id")
    private String belongId;

    /**
     * 设备归属名称
     */
    @Excel(name = "设备归属名称")
    private String belongName;

    /**
     * 设备唯一标识
     */
    @Excel(name = "设备唯一标识")
    private String systemId;

    /**
     * 设备类型
     * MR=开关,BA=模拟
     */
    @Excel(name = "设备类型", readConverterExp = "MR=开关,BA=模拟")
    private String modality;

    /**
     * 设备类型名称
     */
    private String modalityName;

    /**
     * 设备型号
     */
    @Excel(name = "设备型号")
    private String product;

    /**
     * 安装日期
     */
    private String installDate;

    /**
     * 报警电话
     */
    private String phonenumber;

    /**
     * 最后一次 离线时间
     */
    @Excel(name = "最后一次离线时间")
    private Date lastHeartbeatTime;

    /**
     * 设备状态（0=禁用,1=启用）
     */
    @Excel(name = "设备状态", readConverterExp = "0=禁用,1=启用")
    private String status;

    /**
     * 报警状态（0=离线,1=在线,2=报警）
     */
    @Excel(name = "报警状态", readConverterExp = "0=离线,1=在线,2=报警")
    private String warnStatus;

    /**
     * 删除标志（0代表存在 2代表删除）
     */
    private String delFlag;

    /**
     * 地址码
     */
    @Excel(name = "地址码")
    private String hospitalNumber;

    /**
     * 协议 名称
     */
    private String protocolName;

    /**
     * 显示的名称
     */
    @Excel(name = "显示的名称")
    private String deviceName;

    /**
     * 延时时间(秒)
     */
    @Excel(name = "延时时间(秒)")
    private String delayTime;

    /**
     * 显示或报警
     * 1=显示,2=报警
     */
    @Excel(name = "显示或报警", readConverterExp = "1=显示,2=报警")
    private String displayAlarm;

    /**
     * 灯的颜色
     * red=红,orange=橙,yellow=黄,green=绿,blue=蓝,cyan=青,purple=紫,coffee=咖啡,white=白,grey=灰
     */
    @Excel(name = "灯的颜色", readConverterExp = "red=红,orange=橙,yellow=黄,green=绿,blue=蓝,cyan=青,purple=紫,coffee=咖啡,white=白,grey=灰")
    private String lightColor;

    /**
     * 0或1定义 1闭合报警，0断开报警
     */
    @Excel(name = "0或1定义")
    private String dataDefinition;

    /**
     * 寄存器地址
     */
    @Excel(name = "寄存器地址")
    private String registerAddress;

    /**
     * 开关量位
     */
    @Excel(name = "开关量位")
    private String switchingPosition;

    /**
     * 区域
     */
    @Excel(name = "区域")
    private String deptId;

    /**
     * 关联内部参数，报警时他也会报警
     */
    @Excel(name = "关联内部参数")
    private String associateInternalParameters;

    /**
     * 单位
     */
    @Excel(name = "单位")
    private String unit;

    /**
     * 有无符号
     */
    @Excel(name = "有无符号")
    private String symbol;

    /**
     * 乘以系数
     */
    @Excel(name = "乘以系数")
    private String multiplyCoefficient;

    /**
     * 设定值
     */
    @Excel(name = "设定值")
    private String saveValue;

    /**
     * 关联设备id组
     */
    private String deviceIds;

    private String[] strDeviceIds;

    /**
     * 输入量程
     */
    @Excel(name = "输入量程")
    private String inputRange;

    /**
     * 输出量程
     */
    @Excel(name = "输出量程")
    private String outputRange;

    /**
     * 输出源
     */
    @Excel(name = "输出源")
    private String outputSource;

    /**
     * 上限
     */
    @Excel(name = "上限")
    private String topLimit;

    /**
     * 上上限
     */
    @Excel(name = "上上限")
    private String upperLimit;

    /**
     * 下限
     */
    @Excel(name = "下限")
    private String lowerLimit;

    /**
     * 下下限
     */
    @Excel(name = "下下限")
    private String floorLimit;

    /**
     * 上限报警
     */
    @Excel(name = "上限报警")
    private String topLimitAlarm;

    /**
     * 上上限报警
     */
    @Excel(name = "上上限报警")
    private String upperLimitAlarm;

    /**
     * 下限报警
     */
    @Excel(name = "下限报警")
    private String lowerLimitAlarm;

    /**
     * 下下限报警
     */
    @Excel(name = "下下限报警")
    private String floorLimitAlarm;

    /**
     * 排序
     */
    @Excel(name = "排序")
    private Integer sort;

    /**
     * 设备地址
     */
    private String host;
    /**
     * 设备端口
     */
    private String port;

    /**
     * 区域组
     */
    private String deptIds;

    /**
     * 唯一标识组
     */
    private String systemIds;

    private String[] strSystemIds;

    private String[] strDepts;

    /**
     * 上限关联设备运行状态
     */
    @Excel(name = "上限关联设备运行状态")
    private String topLimitDeviceRunStatus;

    /**
     * 上上限关联设备运行状态
     */
    @Excel(name = "上上限关联设备运行状态")
    private String upperLimitDeviceRunStatus;

    /**
     * 下限关联设备运行状态
     */
    @Excel(name = "下限关联设备运行状态")
    private String lowerLimitDeviceRunStatus;

    /**
     * 下下限关联设备运行状态
     */
    @Excel(name = "下下限关联设备运行状态")
    private String floorLimitDeviceRunStatus;

    /**
     * 输出乘以系数
     */
    @Excel(name = "输出乘以系数")
    private String outMultiplyCoefficient;

    /**
     * 开关量关联设备运行状态
     */
    @Excel(name = "开关量关联设备运行状态")
    private String mrDeviceRunStatus;

    /**
     * 数据起始位 4-20mA起始偏移量
     */
    @Excel(name = "数据起始位")
    private String dataStartPosition;

    /**
     * 模拟图一级分类
     */
    @Excel(name = "模拟图一级分类")
    private String diagramFirstClassic;

    /**
     * 模拟图二级分类
     */
    @Excel(name = "模拟图二级分类")
    private String diagramSecClassic;

    /**
     * 模拟图分组
     */
    @Excel(name = "模拟图分组")
    private String diagramSecGroup;

    /**
     * 协议数据
     */
    private String regisData;

    /**
     * 寄存器起始地址
     */
    private Integer startAdd;

    /**
     * 网关数据
     */
    private List<String> regisDatas;

    /**
     * 上限控制 (1 吸合 2 复位)
     */
    @Excel(name = "上限控制", readConverterExp = "1=吸合,2=复位")
    private String topLimitControl;

    /**
     * 上上限控制(1 吸合 2 复位)
     */
    @Excel(name = "上上限控制", readConverterExp = "1=吸合,2=复位")
    private String upperLimitControl;

    /**
     * 下限控制(1 吸合 2 复位)
     */
    @Excel(name = "下限控制", readConverterExp = "1=吸合,2=复位")
    private String lowerLimitControl;

    /**
     * 下下限控制(1 吸合 2 复位)d
     */
    @Excel(name = "下下限控制", readConverterExp = "1=吸合,2=复位")
    private String floorLimitControl;

}
